home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / games / rosa2 / src / spload.s < prev    next >
Text File  |  1997-09-27  |  2KB  |  66 lines

  1. .include    doscall.mac
  2. .include    iocscall.mac
  3.  
  4. *    補足:かなり、昔に作成したゲームから転がした処理なので
  5. *    無駄な事を、随分やっています。
  6.  
  7. *    コメントをマメに入れてるのは、当時アセンブラを勉強
  8. *    しながら作成した為です。(当時、ソースに全角文字が有るのが、いやでした)
  9.  
  10. *    最適化しようと思いましたが、出来ませんでした。(時間不足)
  11.  
  12. *    subtract してから bne でループしているのは、dbraという命令を知らなかった
  13. *    からです。
  14.  
  15.  
  16. IOCS                    equ        $0F
  17.  
  18. .text
  19. .even
  20.  
  21.     move.l        #_CRTMOD,d0                    * グラフィック モード 256 * 256 
  22.     move.w        #6,d1                        * 256 * 256 Mode
  23.     trap        #IOCS
  24.     move.l        #_B_SUPER,d0                * ユーザー  -->  スーパー  モード
  25.     move.l        #0,d1
  26.     movea.l        d1,a1
  27.     trap        #IOCS
  28.     move.l        d0,-(sp)                    * ssp ホゾン
  29.  
  30.     IOCS        _SP_INIT
  31.  
  32. sp_load:
  33.     tst            (Set_Counter)                * スプライト ノ セット ケンスウ ノ 0 ケン チェック
  34.     beq            pl_load                        * 0 ノ トキ ニ ハ pl_load ヘ ブランチ
  35. sp_load_main:
  36.     lea            Sprite_Data_Area,a1            * A1 レジスタ = スプライト データ アドレス
  37.     lea            Set_Pattern_No,a2            * A2 レジスタ = セット データ アドレス
  38. sp_load_loop_1:
  39.     movea.l        #$EB8000,a0                    * A0 レジスタ = PCG エリア アドレス
  40.     move        (a2)+,d0                    * D0 レジスタ = セット カショ
  41.     mulu        #128,d0                        * D0 = D0 * 128
  42.     add.l        d0,a0                        * A0 = A0 + D1 ( PCG カクノウ アドレス )
  43.     move.w        #64,d0                        * D0 レジスタ = データ セット ケンスウ
  44. *    ext.w        d0                            * D0 レジスタ ヲ フゴウ カクチョウ(何故?)
  45. sp_load_loop_2:
  46.     move.w        (a1)+,(a0)+                    * データ カクノウ ( アドレス ハ  ポスト インクリメント )
  47.     sub            #1,d0
  48.     bne            sp_load_loop_2                * D0 レジスタ ノ カイスウ ブン sp_load_loop_2 ヲ ループ
  49.     sub            #1,(Set_Counter)
  50.     bne            sp_load_loop_1                * Set_Counter ノ カイスウ ブン sp_load_loop_1 ヲ ループ
  51. pl_load:
  52.     movea.l        #$E82200,a0                    * A0 レジスタ = パレット アドレス
  53.     lea            Palet_Area,a1                * A1 レジスタ = パレット データ カクノウ アドレス
  54.     move.w        #256,d0
  55. pl_load_loop:
  56.     move        (a1)+,(a0)+                    * パレット カラー コード テンソウ
  57.     sub            #1,d0
  58.     bne            pl_load_loop
  59.     move.l        #_B_SUPER,d0                * スーパー  ーー>  ユーザー モード
  60.     move.l        (sp)+,d1
  61.     movea.l        d1,a1
  62.     trap        #IOCS
  63.     dc.w        _EXIT
  64.  
  65. .include rosa.sp
  66.